package main

import "fmt"

// nil 接口
func main() {
	// 对于一个未被赋值的接口变量来说，它的接口类型和值都是 nil，并且变量本身也等于 nil
	var v interface{}
	fmt.Printf("%T %v %v\n", v, v, v == nil)

	var p *int
	v = p
	fmt.Printf("%T %v %v\n", v, v, v == nil)
	// 检验接口变量的内部表示
	fmt.Printf("%#v\n", v) // (*int)(nil) 前面是类型 后面是值

	// 这是一个未被赋值的接口变量
	var s fmt.Stringer
	fmt.Printf("%T %v %v\n", s, s, s == nil)

}
